package com.xinnet.mms.product.service.impl;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.xinnet.mms.config.service.FlowTurnConfigService;
import com.xinnet.mms.entity.Dept;
import com.xinnet.mms.entity.Product;
import com.xinnet.mms.goods.dao.GoodsDao;
import com.xinnet.mms.product.dao.ProductDao;
import com.xinnet.mms.product.service.ProductService;

@Service("productService")
public class ProductServiceImpl implements ProductService {
	
	@Autowired
	private ProductDao productDao;
	
	@Autowired
	private GoodsDao goodsDao;
	
	@Autowired
	private FlowTurnConfigService flowTurnConfigService;
	
	SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	/**
	 * @return 获取可用的流转规则
	 */
	public List<Product> queryEnableProduct(){

		List<Product> list = productDao.queryEnableProduct();

		return list;
	}
	
	public void updateSingleRate(Double singleRate){
		productDao.updateSingleRate(singleRate);
	}
	
	public void updateProduct(Product product){
		productDao.updateProduct(product);
	}

	@Override
	public void addProduct(Product product) {
		productDao.addProduct(product);
	}
	
	public void  productSynchronous(){
		//this.synProduct();
		//this.synGoods();	
		System.out.println("同步产品商品数据完成");
	}

	/**
	 * 根据产品id集合查询部门负责产品
	 */
	@Override
	public List<Product> getProductListByDeptno(String[] ids, String deptno) throws SQLException {
		Dept dept=new Dept();
		List<String> strList = new ArrayList<String>();
		for (int i = 0; i < ids.length; i++) {
			strList.add(ids[i]);
		}
		dept.setProductIdList(strList);
		dept.setId(deptno);
		List<Product> list=productDao.getProductListByDeptno(dept);
		if(list==null || list.isEmpty()) {
			return null;
		}
		return list;
	}
	
	
	
//	/**
//	 * 同步产品
//	 * @throws SQLException 
//	 * @throws NumberFormatException 
//	 */
//	@SuppressWarnings("unchecked")
//	private void  synProduct() throws NumberFormatException{
//		List<Product> needAddProductList = new ArrayList<Product>();
//		List<Product> needDelProductList = new ArrayList<Product>();
//		//List<Product> needUpateProductList = new ArrayList<Product>();
//		
//		// 取得产品数据 封装 插入产品表
//		List<Map<String, Object>> remoteProductList = json;
//		List<Product> localProductList = productDao.getALLProduct();
//		if(remoteProductList==null || remoteProductList.size()==0){
//			for(Product product:localProductList) {
//				Integer id=Integer.parseInt(product.getId());
//				productDao.delete(id.longValue());
//			}
//		}else{
//			if(localProductList==null || localProductList.size()==0){
//				
//				for (Map<String, Object> map : remoteProductList) {
//					Integer id = (Integer) map.get("id");
//					String code = (String) map.get("code");
//					String name = (String) map.get("name");
//					String superCode = (String) map.get("superCode");
//					Product product = new Product();
//					product.setAuditEffect(1);
//					product.setEffectDate(sf.format(new Date()));
//					product.setAuditName("System");
//					product.setUpdateDate(sf.format(new Date()));
//					product.setAuditEffect(1);
//					product.setId(id + "");
//					product.setProductCode(code);
//					product.setProductName(name);
//					product.setParentProductId(superCode);
//					// 到期预警时间
//					int dueWarningTime = 0;
//					int middleServiceCycle = 0;
//					try {
//						dueWarningTime = Integer.parseInt(flowTurnConfigService.getWarningTime().getConfigValue());
//						middleServiceCycle = Integer.parseInt(flowTurnConfigService.getMiddleServiceCycleInCheck().getConfigValue());
//					} catch (SQLException e) {
//						// TODO Auto-generated catch block
//						e.printStackTrace();
//					}
//					product.setDueWarningTime(dueWarningTime);
//					product.setMiddleServiceCycle(middleServiceCycle);
//					
//					//product.setAllotPriority(i);
//					//product.setPriority(i);
//					boolean isAlreadyExists = false;
//					for (Iterator<Product> iterator2 = needAddProductList.iterator(); iterator2.hasNext();){
//						Product needAddProduct = (Product) iterator2.next();
//						String productId =  needAddProduct.getId();
//						if(productId.equals(id)){
//							isAlreadyExists = true;
//							break;
//						}
//					}
//					if(!isAlreadyExists){
//						needAddProductList.add(product);
//					}
//				}
//
//			}else{
//				//添加的产品：远端有，本地没有
//				for (Map<String, Object> map : remoteProductList) {
//					String id = (Integer) map.get("id")+"";
//					String code = (String) map.get("code");
//					boolean isCanAdd = true;
//					for (Iterator<Product> iterator = localProductList.iterator(); iterator.hasNext();) {
//						Product localProduct = (Product) iterator.next();
//						String productId =  localProduct.getId();
//						if(productId.equals(id)){
//							isCanAdd = false;
//							break;	
//						}	
//					}	
//					if(isCanAdd){
//						String name = (String) map.get("name");
//						String superCode = (String) map.get("superCode");
//						Product product = new Product();
//						product.setAuditEffect(1);
//						product.setEffectDate(sf.format(new Date()));
//						product.setAuditName("System");
//						product.setUpdateDate(sf.format(new Date()));
//						product.setAuditEffect(1);
//						//product.setId(UUID.randomUUID().toString());
//						product.setId(id+"");
//						product.setProductCode(code);
//						product.setProductName(name);
//						product.setParentProductId(superCode);
//						// 到期预警时间
//						int dueWarningTime = 0;
//						int middleServiceCycle = 0;
//						try {
//							dueWarningTime = Integer.parseInt(flowTurnConfigService.getWarningTime().getConfigValue());
//							middleServiceCycle = Integer.parseInt(flowTurnConfigService.getMiddleServiceCycleInCheck().getConfigValue());
//						} catch (SQLException e) {
//							// TODO Auto-generated catch block
//							e.printStackTrace();
//						}
//						product.setDueWarningTime(dueWarningTime);
//						product.setMiddleServiceCycle(middleServiceCycle);
//						
//						//product.setAllotPriority(i);
//						//product.setPriority(i);
//						boolean isAlreadyExists = false;
//						for (Iterator<Product> iterator2 = needAddProductList.iterator(); iterator2.hasNext();) {
//							Product needAddProduct = (Product) iterator2.next();
//							String tempProductId =  needAddProduct.getId();
//							if(tempProductId.equals(id)){
//								isAlreadyExists = true;
//								break;
//							}
//						}
//						if(!isAlreadyExists){
//							needAddProductList.add(product);
//						}
//							
//					}
//				}
//				
//				//删除的产品：本地有，远端没有
//				for (Iterator<Product> iterator = localProductList.iterator(); iterator.hasNext();) {
//					Product localProduct = (Product) iterator.next();
//					String productId = localProduct.getId();
//					boolean isCanDel = true;
//					
//					for (Map<String, Object> map : remoteProductList){
//						String id = (Integer) map.get("id")+"";
//						if(productId.equals(id)){
//							isCanDel = false;
//							break;
//						}		
//					}
//					if(isCanDel){
//						Product product = new Product();
//						product.setId(productId);
//						needDelProductList.add(product);	
//					}	
//				}	
//			}
//		}
//		
//		for(Product product:needAddProductList) {
//			productDao.addProduct(product);	
//		}
//		for(Product product:needDelProductList) {
//			Integer id=Integer.parseInt(product.getId());
//			productDao.delete(id.longValue());
//		}
//	}
//	/**
//	 * 同步商品
//	 */
//	@SuppressWarnings("unchecked")
//	private void  synGoods(){
//		//删除商品
//		goodsDao.delAllGoods();
//		//从新添加商品
//   		Map<String,Object> goodsMap  = historyGoodService.getAllGoodsForMap();
//		Map<String,Object> goodsContentMap = (Map<String,Object>)goodsMap.get("CONTENT");
//   		List<Map<String, Object>> goodsList = (List<Map<String, Object>>)goodsContentMap.get("CONTENT_BODY");
//   		if(goodsList!=null && goodsList.size()>0){
//   	   		for (Iterator<Map<String, Object>> iterator = goodsList.iterator(); iterator.hasNext();) {
//   				Map<String, Object> map = (Map<String, Object>) iterator.next();
//   				//BigInteger   id = (BigInteger)map.get("id");
//   				String productCode = (String)map.get("productCode");
//   				String goodCode = (String)map.get("goodCode");
//   				String description = (String)map.get("description");
//   				String name = (String)map.get("name");
//   				String goodAlias = (String)map.get("goodAlias");
//   				String state = (String)map.get("state");
//   				String priceType = (String)map.get("priceType");
//   				String goodClass = (String)map.get("goodClass");
//   				String goodType  = (String)map.get("goodType");
//   				String regionType = (String)map.get("regionType");
//
//   				Goods goods = new Goods();
//   				goods.setDescription(description);
//   				goods.setGoodAlias(goodAlias);
//   				goods.setGoodClass(goodClass);
//   				goods.setGoodCode(goodCode);
//   				goods.setGoodType(goodType);
//   				String id = UUID.randomUUID().toString();
//   				goods.setId(id);
//   				goods.setName(name);
//   				goods.setPriceType(priceType);
//   				goods.setProductCode(productCode);
//   				goods.setRegionType(regionType);
//   				goods.setState(state);
//   				goodsDao.addGoods(goods);
//   			}
//   		}
//	}

}
